package com.mage.method;

import freemarker.template.SimpleScalar;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;

import java.util.List;

/**
 * 自定义一个indexOf('abc', 'abcd')函数,传入两个字符串参数，
 * 获取前一个参数值在后一个参数中的位置，如果没有返回-1
 */
public class IndexOfString implements TemplateMethodModelEx {


    @Override
    public Object exec(List arguments) throws TemplateModelException {
        // 其中arguments就是传入的参数列表
        if (arguments == null || arguments.size() < 2) {
            throw new TemplateModelException("参数必须是两个字符串。");
        }
        // Freemarker模板传入的数据类型，需要调用getAsString()返回Java字符串String
        SimpleScalar first = (SimpleScalar)arguments.get(0);
        SimpleScalar second = (SimpleScalar)arguments.get(1);
        int index = second.getAsString().indexOf(first.getAsString());
        return index;
    }
}
